package prjtgl.metier.paiement;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;
import prjtgl.bdd.paiement.HPaiement;
import prjtgl.metier.comptes.Membre;

/**
 * Paiement effectue par un recruteur
 * @author Lucie
 */
@Entity
@Table(name="paiement")
public class Paiement implements Serializable {
	
	/** ID BDD */
	private long id;
	
	/** Date a laquelle le paiement a ete effectue */
	private Date date;
	
	/** Membre recherche lors de ce paiement */
	private Membre membreRecherche;
	
	/** Porte monnaie */
	private PorteMonnaie porteMonnaie;

	/**
	 * Retourne l'ID BDD
	 * @return ID BDD
	 */
	@Id
	@Column(name="id")
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	public long getId() {
		return id;
	}

	/**
	 * Mutateur de l'ID BDD
	 * @param id ID BDD
	 */
	public void setId(long id) {
		this.id = id;
	}

	/**
	 * Retourne la date de paiement
	 * @return Date
	 */
	@Column(name="date_paiement")
	@Temporal(javax.persistence.TemporalType.TIMESTAMP)
	public Date getDate() {
		return date;
	}

	/**
	 * Mutateur de la date de paiement
	 * @param date Nouvelle date de paiement
	 */
	public void setDate(Date date) {
		this.date = date;
	}

	/**
	 * Retourne le membre recherche
	 * @return Membre recherche
	 */
	@OneToOne(fetch= FetchType.LAZY,cascade= CascadeType.ALL)
	@JoinColumn(name="id_membre")
	public Membre getMembreRecherche() {
		return membreRecherche;
	}

	/**
	 * Mutateur du membre recherche
	 * @param membreRecherche Nouveau membre recherche
	 */
	public void setMembreRecherche(Membre membreRecherche) {
		this.membreRecherche = membreRecherche;
	}

	/**
	 * Retourne le porte monnaie
	 * @return Porte monnaie
	 */
	@ManyToOne(cascade= CascadeType.ALL, fetch= FetchType.LAZY)
	@JoinColumn(name="id_portemonnaie")
	public PorteMonnaie getPorteMonnaie() {
		return porteMonnaie;
	}

	/**
	 * Mutateur du porte monnaie
	 * @param porteMonnaie Nouveau porte monnaie
	 */
	public void setPorteMonnaie(PorteMonnaie porteMonnaie) {
		this.porteMonnaie = porteMonnaie;
	}
	
        
        public void creerPaiment(){
            HPaiement hp = new HPaiement();
            hp.enregistrer(this);
        }
	
}
